﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Drawing;

// Falta colocar o select para poder retornar os valores por mes na tabela do relatório!!!

namespace sistemaAcademicoFinanceiroEscolas.Relatorios
{
    public partial class relatorioComparativoGrupoIndividual : System.Web.UI.Page
    {
        validarValores vV = new validarValores();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                // Carregar professors existentes e ativos

                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();
                SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqld.Open();

                string sqlano = "select * from anoletivo order by codigoAnoLetivo desc";

                SqlCommand cmdano = new SqlCommand(sqlano, sqlc);
                SqlDataReader myReaderano = cmdano.ExecuteReader();

                ListItem anoSelecione = new ListItem();
                anoSelecione.Value = "0";
                anoSelecione.Text = "Selecione um ano";

                lstAno.Items.Add(anoSelecione);

                if (myReaderano.HasRows)
                {

                    while (myReaderano.Read())
                    {
                        ListItem ano = new ListItem();

                        ano.Value = myReaderano["codigoAnoLetivo"].ToString();
                        ano.Text = myReaderano["descricaoAnoLetivo"].ToString();

                        if (Convert.ToInt16(myReaderano["descricaoAnoLetivo"]) <= Convert.ToInt16(DateTime.Now.Year))
                        {
                            lstAno.Items.Add(ano);
                        }
                    }

                }
                //ano carregados
                myReaderano.Close();
                cmdano.Dispose();

                // fechando conexão com o banco de dados
                sqlc.Close();
            }
        }
        // metodo clique em um item do list e aparesentará imediatamente o relatório
        protected void lstAno_SelectedIndexChanged(object sender, EventArgs e)
        {
            listar();
        }

        void listar()
        {
            if (lstAno.SelectedValue == "0")
            {
                string validacao = "<script language=javascript>alert('Selecione um ano para gerar o relatório.');</script>";
                Panel1.Controls.Add(new LiteralControl(validacao));
                lstAno.Focus();
            }
            else
            {
                string select = "select top 1 ";

                select += "(select COUNT(*) as qtdG from aula aG  ";
                select += "where aG.codigoAnoLetivo = " + lstAno.SelectedValue + " and aG.aulaRealizada = 1 and aG.codigoGrupo is not null) as quantidadeGrupo,  ";

                select += "(select COUNT(*) as qtdI from aula aI  ";
                select += "where aI.codigoAnoLetivo = " + lstAno.SelectedValue + " and aI.aulaRealizada = 1 and aI.codigoAluno is not null) as quantidadeIndividual ";

                select += "from aula ";

                double grupoTotal = grupo(select);
                double individualTotal = individual(select);
                string conteudoAnual = "", conteudoMensal = "", conteudoGrafico = "", grafico1 = "", grafico2 = "";

                conteudoAnual = "<table width=\"100%\" border=\"1\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#99CCFF\">\n";

                conteudoAnual += "<tr style=\"background-color: #f6f9fc\">\n";
                conteudoAnual += "<th colspan=\"5\"><h2>Anual</h2></th>\n";
                conteudoAnual += "</tr>\n";

                conteudoAnual += "<tr style=\"background-color: #f6f9fc\">\n";
                conteudoAnual += "<th>Ano</th>\n";
                conteudoAnual += "<th>Grupo</th>\n";
                conteudoAnual += "<th>Individual</th>\n";
                conteudoAnual += "</tr>\n";

                conteudoAnual += "<tr align=\"center\">\n";
                conteudoAnual += "<td>" + lstAno.SelectedItem.Text + "</td>\n";
                conteudoAnual += "<td>" + grupoTotal + "</td>\n";
                conteudoAnual += "<td>" + individualTotal + "</td>\n";
                conteudoAnual += "</tr>\n";

                Panel1.Controls.Add(new LiteralControl(conteudoAnual));

                conteudoGrafico = "<script type=\"text/javascript\">\n";
                conteudoGrafico += "gvChartInit();\n";
                conteudoGrafico += "jQuery(document).ready(function() {\n";
                conteudoGrafico += "jQuery('#graf').gvChart({chartType: 'LineChart',gvSettings: {vAxis: { title: '' },hAxis: { title: '' },width: 600,height: 300}});\n";
                conteudoGrafico += "});\n";
                conteudoGrafico += "</script>\n";
                conteudoGrafico += "<table id='graf'>\n";
                conteudoGrafico += "<caption>Gráfico mensal de " + lstAno.SelectedItem.Text + "</caption>\n";
                conteudoGrafico += "<thead>\n";
                conteudoGrafico += "<tr>\n";
                conteudoGrafico += "<th></th>\n";
                conteudoGrafico += "<th>Jan</th>\n";
                conteudoGrafico += "<th>Fev</th>\n";
                conteudoGrafico += "<th>Mar</th>\n";
                conteudoGrafico += "<th>Abr</th>\n";
                conteudoGrafico += "<th>Mai</th>\n";
                conteudoGrafico += "<th>Jun</th>\n";
                conteudoGrafico += "<th>Jul</th>\n";
                conteudoGrafico += "<th>Ago</th>\n";
                conteudoGrafico += "<th>Set</th>\n";
                conteudoGrafico += "<th>Out</th>\n";
                conteudoGrafico += "<th>Nov</th>\n";
                conteudoGrafico += "<th>Dez</th>\n";
                conteudoGrafico += "</tr>\n";
                conteudoGrafico += "</thead>\n";
                conteudoGrafico += "<tbody>\n";



                grafico1 = "<tr>\n";
                grafico1 += "<th>Grupo</th>\n";


                grafico2 = "<tr>\n";
                grafico2 += "<th>Individual</th>\n";

                conteudoMensal += "<tr style=\"background-color: #f6f9fc\">\n";
                conteudoMensal += "<th colspan=\"5\"><h2>Mensal</h2></th>\n";
                conteudoMensal += "</tr>\n";

                conteudoMensal += "<tr style=\"background-color: #f6f9fc\">\n";
                conteudoMensal += "<th>Mês</th>\n";
                conteudoMensal += "<th>Grupo</th>\n";
                conteudoMensal += "<th>Individual</th>\n";
                conteudoMensal += "</tr>\n";

                for (int i = 1; i < 13; i++)
                {
                    string mes = i.ToString();
                    if (mes.Length == 1)
                    {
                        mes = "0" + mes;
                    }

                    select = "select top 1 ";

                    select += "(select COUNT(*) as qtdG from aula aG  ";
                    select += "where aG.codigoAnoLetivo = " + lstAno.SelectedValue + " and aG.aulaRealizada = 1 and aG.codigoGrupo is not null  ";
                    select += "and (SUBSTRING ( aG.dataAula ,4 , 2 )) = '" + mes + "') as quantidadeGrupo,  ";

                    select += "(select COUNT(*) as qtdI from aula aI  ";
                    select += "where aI.codigoAnoLetivo = " + lstAno.SelectedValue + " and aI.aulaRealizada = 1 and aI.codigoAluno is not null  ";
                    select += "and (SUBSTRING ( aI.dataAula ,4 , 2 )) = '" + mes + "') as quantidadeIndividual ";

                    select += "from aula ";

                    grupoTotal = grupo(i.ToString(), select);
                    individualTotal = individual(i.ToString(), select);

                    conteudoMensal += "<tr align=\"center\">\n";
                    conteudoMensal += "<td>" + pegarMes(i) + "</td>\n";
                    conteudoMensal += "<td>" + grupoTotal + "</td>\n";
                    conteudoMensal += "<td>" + individualTotal + "</td>\n";
                    conteudoMensal += "</tr>\n";

                    grafico1 += "<td>" + grupoTotal.ToString().Replace(".", "") + "</td>\n";

                    grafico2 += "<td>" + individualTotal.ToString().Replace(".", "") + "</td>\n";
                }

                conteudoMensal += "</table>\n";

                grafico1 += "</tr>\n";

                grafico2 += "</tr>\n";

                conteudoGrafico += grafico1 + grafico2 + "</tbody>\n";

                conteudoGrafico += "</table>\n";

                Panel1.Controls.Add(new LiteralControl(conteudoMensal));
                Panel2.Controls.Add(new LiteralControl(conteudoGrafico));
            }
        }

        double grupo(string select)
        {
            double quantidade = 0;

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            SqlCommand cmd = new SqlCommand(select, sqlc);
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                dr.Read();

                quantidade = Convert.ToDouble(dr["quantidadeGrupo"].ToString());
            }

            dr.Close();

            return quantidade;
        }

        double grupo(string mes, string select)
        {
            double quantidade = 0;

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            SqlCommand cmd = new SqlCommand(select, sqlc);
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                dr.Read();

                quantidade = Convert.ToDouble(dr["quantidadeGrupo"].ToString());
            }

            dr.Close();

            return quantidade;
        }

        double individual(string select)
        {
            double quantidade = 0;

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            SqlCommand cmd = new SqlCommand(select, sqlc);
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                dr.Read();

                quantidade = Convert.ToDouble(dr["quantidadeIndividual"].ToString());
            }

            dr.Close();

            return quantidade;
        }

        double individual(string mes, string select)
        {
            double quantidade = 0;

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            SqlCommand cmd = new SqlCommand(select, sqlc);
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                dr.Read();

                quantidade = Convert.ToDouble(dr["quantidadeIndividual"].ToString());
            }

            dr.Close();

            return quantidade;
        }

        string pegarMes(int mes)
        {
            string textoMes = "";

            switch (mes)
            {
                case 1: textoMes = "Janeiro";
                    break;
                case 2: textoMes = "Fevereiro";
                    break;
                case 3: textoMes = "Março";
                    break;
                case 4: textoMes = "Abril";
                    break;
                case 5: textoMes = "Maio";
                    break;
                case 6: textoMes = "Junho";
                    break;
                case 7: textoMes = "Julho";
                    break;
                case 8: textoMes = "Agosto";
                    break;
                case 9: textoMes = "Setembro";
                    break;
                case 10: textoMes = "Outubro";
                    break;
                case 11: textoMes = "Novembro";
                    break;
                default: textoMes = "Dezembro";
                    break;
            }
            return textoMes;
        }
    }
}
